#!/usr/bin/env Python
# -*- coding:utf-8 -*-
# task_51_memo.py
# A memo demo 51备忘录
# author: luoxiang

from color_me import ColorMe  # 导入4种颜色的自建库
import time  # 导入时间标准库


# 备忘录开始信息输出
desc = '51备忘录'.center(30, '-')
print(desc)
time.sleep(1)
__user__ = input('请输入用户名：')
welcome = '欢迎使用51备忘录小程序'
print(__user__, f'{welcome}')
time.sleep(1)

all_memo = []  # 新建备忘录列表，存储备忘信息

# 用时间字典定义8个时间段
time_dict = {'早晨': '6点到8点', '上午': '9点到11点', '中午': '12点到14点', '下午': '15点到17点',
             '傍晚': '18点到20点', '晚上': '21点到23点', '深夜': '0点到2点', '凌晨': '3点到5点'}


is_add = True
all_time = 0
while(is_add):  # 判断真假开始循环

    # 添加两个备忘录输入格式事例
    print('示例1：2019年07月08日8点30分去单位上班，用时3h30min')
    time.sleep(1)
    print('示例2：07月08日上午需要带笔记本电脑去上班')
    time.sleep(1)
    in_sentence = input('请按照示例格式输入：')


# 根据输入格式，判断拆分信息（日期，时点，事件，时长）形式
    if in_sentence[in_sentence.find('日') + 1:
       in_sentence.find('日') + 3]in time_dict.keys():
        in_date = in_sentence[:in_sentence.find('日') + 1]
        in_time = time_dict[
            in_sentence[in_sentence.find('日') + 1: in_sentence.find('日') + 3]]
        in_thing = in_sentence[in_sentence.find('日') + 3:]
        in_duration = '3h'  # 每个时间副词，默认用时3小时
        hours = 3  # 每个时间副词，默认用时3小时
        minutes = 0

    else:
        in_date = in_sentence[:in_sentence.find('日') + 1]
        in_time = in_sentence[
            in_sentence.find('日') + 1: in_sentence.find('分') + 1]
        in_thing = in_sentence[
            in_sentence.find('分') + 1: in_sentence.find('，')]
        in_duration = in_sentence[in_sentence.find('时') + 1:]
        hours = in_sentence[in_sentence.find('时') + 1: in_sentence.find('h')]
        minutes = in_sentence[in_sentence.find('h') + 1: in_sentence.find('m')]

    print('待办列表'.center(30, '-'))
    time.sleep(1)

    # 新建事件信息字典，并将四种信息键和值依次存入字典
    things_dict = {}
    things_dict['date'] = in_date
    things_dict['time'] = in_time
    things_dict['thing'] = in_thing
    things_dict['duration'] = in_duration

    all_memo.append(things_dict)  # 将每条新建的字典信息，追加到备忘录列表
    all_time += int(hours) * 60 + int(minutes)  # 通过运算，追加总时长
    num = 0  # 新建序号
    for m in all_memo:  # 将列表信息逐条输出
        num += 1  # 追加序号

        # 给四种信息添加不同颜色，并输出
        # vscode上本人没安装运行颜色的扩展，输出不了颜色
        date_color = ColorMe('日期:' + m['date']).red()
        time_color = ColorMe('时点:' + m['time']).green()
        thing_color = ColorMe('事件：' + m['thing']).blue()
        duration_color = ColorMe('时长：' + m['duration']).yellow()
        print(f'{num}.{date_color}, {time_color}, ',
              f'{thing_color}, {duration_color}')
        time.sleep(1)

    # 输出备忘列表信息条数和需要的总时长
    print(f'共{len(all_memo)}条待办事项,',
          f'总时长：{all_time // 60}小时{all_time % 60}分。', end='')
    time.sleep(1)
    print('（y：继续添加，n: 退出）')  # 判断是否继续循环
    is_add = input().strip() == 'y'
